Telegram Group & Telegram Channel
🔧 Задача на C# для внимательных разработчиков

Что выведет следующий код?


using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
var actions = new List<Action>();

for (int i = 0; i < 3; i++)
{
actions.Add(() => Console.WriteLine(i));
}

foreach (var action in actions)
action();
}
}


Варианты ответа:
A)

1
2


B)

3
3


C)

0
0


D)



---

Правильный ответ: B

Почему:
Лямбда-функции захватывают переменную
i по ссылке, а не её значение на каждой итерации. После завершения цикла i == 3, и все замыкания ссылаются на одно и то же i. Это классическая ловушка замыканий в C#.



tg-me.com/csharp_1001_notes/669
Create:
Last Update:

🔧 Задача на C# для внимательных разработчиков

Что выведет следующий код?


using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
var actions = new List<Action>();

for (int i = 0; i < 3; i++)
{
actions.Add(() => Console.WriteLine(i));
}

foreach (var action in actions)
action();
}
}


Варианты ответа:
A)

1
2


B)

3
3


C)

0
0


D)



---

Правильный ответ: B

Почему:
Лямбда-функции захватывают переменную
i по ссылке, а не её значение на каждой итерации. После завершения цикла i == 3, и все замыкания ссылаются на одно и то же i. Это классическая ловушка замыканий в C#.

BY C# 1001 notes


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/csharp_1001_notes/669

View MORE
Open in Telegram


C 1001 notes Telegram | DID YOU KNOW?

Date: |

The seemingly negative pandemic effects and resource/product shortages are encouraging and allowing organizations to innovate and change.The news of cash-rich organizations getting ready for the post-Covid growth economy is a sign of more than capital spending plans. Cash provides a cushion for risk-taking and a tool for growth.

C 1001 notes from fr


Telegram C# 1001 notes
FROM USA